package utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.log4j.Logger;


/**
 * 完成基本的文件操作
 * @author Administrator
 *
 */
public class FileUtil {
	private static final Logger log = Logger.getLogger(FileUtil.class);
	/**
	 * 根据文件绝对路径，获取文件所处的文件夹路径
	 * @param filePath 文件的绝对路径
	 * @return
	 */
	public static String getFileDir(String filePath){
		int s = filePath.lastIndexOf("/");
		String a = filePath.substring(0, s+1);
		return a;
	}
	
	/**
	 * 创建文件夹
	 * @param dirpath 文件夹路径
	 * @return 创建成功返回true，失败返回false
	 */
	public static boolean createDir(String dirpath){
		File fileDwr = new File(dirpath);
		if(!fileDwr.exists()) {
			log.debug("文件夹不存在");
			if(!fileDwr.mkdir()) {
				log.debug("文件夹创建失败");
				return false;
			}
        }
		return true;
	}
	
	/**
	 * 读取文件内容，返回二进制数组
	 * @param filepath 文件绝对路径
	 * @return 二进制内容
	 */
	public static byte[] getFileContent(String filepath){
		InputStream in = null;
		byte[] b=null;
		try {
			in = new FileInputStream(filepath);
			b = new byte[in.available()];
			in.read(b);
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}finally {
			try {
				in.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
		return b;
	}
	
	/**
	 * 将二进制写入文件中
	 * @param b 二进制数组
	 * @param filepath 文件的绝对路径
	 * @return 是否写入成功
	 */
	public static boolean writeFileContentToFile(byte[] b,String filepath) {
		OutputStream out = null;
		try {
			out = new FileOutputStream(filepath);
			out.write(b);
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}finally {
			try {
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
				return false;
			}
		}
		return true;
	}
}
